// 文章验证器

import { isValidArticleTitle, isValidArticleContent, sanitizeInput } from '../utils/validation.js'
import { ArticleTypes } from '../types/index.js'

/**
 * 验证文章数据
 */
const validateArticleData = (data) => {
  const errors = []
  
  if (!isValidArticleTitle(data.title)) {
    errors.push('文章标题格式不正确（5-100个字符）')
  }
  
  if (!isValidArticleContent(data.content)) {
    errors.push('文章内容不能少于10个字符')
  }
  
  if (data.category && data.category.length > 50) {
    errors.push('分类名称不能超过50个字符')
  }
  
  if (data.tags && Array.isArray(data.tags) && data.tags.length > 10) {
    errors.push('标签数量不能超过10个')
  }
  
  return {
    isValid: errors.length === 0,
    errors
  }
}

/**
 * 验证文章更新数据
 */
const validateArticleUpdateData = (data) => {
  const errors = []
  
  if (data.title && !isValidArticleTitle(data.title)) {
    errors.push('文章标题格式不正确（5-100个字符）')
  }
  
  if (data.content && !isValidArticleContent(data.content)) {
    errors.push('文章内容不能少于10个字符')
  }
  
  if (data.category && data.category.length > 50) {
    errors.push('分类名称不能超过50个字符')
  }
  
  return {
    isValid: errors.length === 0,
    errors
  }
}

/**
 * 验证评论数据
 */
const validateCommentData = (data) => {
  const errors = []
  
  if (!data.content || data.content.trim().length < 1) {
    errors.push('评论内容不能为空')
  }
  
  if (data.content && data.content.length > 1000) {
    errors.push('评论内容不能超过1000个字符')
  }
  
  return {
    isValid: errors.length === 0,
    errors
  }
}

export default {
  validateArticleData,
  validateArticleUpdateData,
  validateCommentData
} 